/**
 * 监听元素是否出现在屏幕
 * @param { String } elName 所在的节点
 * @param { String } attr 需要获取的属性值
 *  {
 *      dataset    // 节点的dataset
 *      width      // 节点的宽度
 *      height     // 节点的高度
 *      scrollLeft // 节点的水平滚动位置
 *      scrollTop  // 节点的竖直滚动位置
 *      scrollX    // 节点 scroll-x 属性的当前值
 *      scrollY    // 节点 scroll-y 属性的当前值
 *
 *      // 此处返回指定要返回的样式名
 *      res.margin
 *      res.backgroundColor
 *      res.context    // 节点对应的 Context 对象
 * }
 * @param { Boolean } isComponent 是否在组建内使用
 * 
 * @return {Function} 一个promise
 */

function listenEltoScreen({
    elName = '',
    attr = '',
    value = '',
    isComponent = {}
} = {}) {
    return new Promise((resolve) => {
        const query = !isComponent ? wx.createIntersectionObserver() : this.createIntersectionObserver()

        query.relativeToViewport({
            [attr]: value
        }).observe(elName, (res) => {
            resolve(res)
        })
    })
}

Component({
    /**
     * 组件的属性列表
     */
    properties: {
        // 图片链接
        src: {
            type: String,
            value: ''
        },
        item: {
            type: Object,
            value: {},
        },
        index: {
            type: Number,
            value: 0
        },
        width: {
            type: String,
            value: '100%'
        },
        height: {
            type: String,
            value: '100%'
        },
        // 是否触发懒加载(暂不支持动态修改 触发懒加载)
        lazy: {
            type: Boolean,
            value: true
        },
        // 触发懒加载的阀值
        threshold: {
            type: Number,
            value: 20
        },
        // 触发懒加载的方向
        direction: {
            type: String,
            value: 'bottom'
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        show: false,

    },

    /**
     * 组件的方法列表
     */
    methods: {
        toRoom(e) {
            const that = this
            if (wx.getStorageSync('token') == "") {
              that.triggerEvent("is_user_show", false);
              that.triggerEvent("is_user", 1);
             
              return
            }


       
            
            wx.navigateTo({
                url: "/pages/index/room/index?room_id=" + e.currentTarget.dataset.roomid,
            });
       

        },

        call(e) {
            console.log(e)
            let mobile = e.currentTarget.dataset.mobile
            wx.makePhoneCall({
                phoneNumber: mobile
            })
        },
        duo_map(e) {
            console.log(e)
            let data = e.currentTarget.dataset.data;
            const that = this;
            wx.getLocation({
                type: "wgs84",
                success: function (res) {
                    wx.openLocation({
                        //​使用微信内置地图查看位置。
                        latitude: Number(data.lat), //要去的纬度-地址
                        longitude: Number(data.lng), //要去的经度-地址
                        name: data.name,
                        address: data.address,
                        scale: 18,
                    });
                },
                fail(e) {
                    console.log(e);
                    wx.setStorageSync("openSet", true);
                    that.openSet();
                },
            });
        },
    },
    ready() {
        if (!this.data.lazy) return

        // 监听 元素是否有距离屏幕的情况
        listenEltoScreen.bind(this)({
            elName: '.imgContent',
            attr: this.data.direction,
            value: this.data.threshold,
            isComponent: true
        }).then(() => {
            console.log(21)
            this.setData({
                show: true
            })
        })
    },
    onPageScroll(e) {
        console.log(e)
    }
})